package delphorm.service.exception;

/**
 * Classe d'exception pour les services
 * 
 * @author jerome
 * 
 */
public class ServiceException extends Exception {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * Nom u service où a eu lieu l'erreur
	 */
	private String nomService;
	/**
	 * Nom de la méthode
	 */
	private String methodeService;
	/**
	 * Arguments de la méthode
	 */
	private String[] args;

	/**
	 * Constructeur par défaut
	 */
	public ServiceException() {
		super();
	}

	/**
	 * Constructeur minimal
	 * 
	 * @param message
	 *            Message d'erreur
	 * @param origine
	 *            Exception d'origine
	 */
	public ServiceException(String message, Throwable origine) {
		super(message, origine);
	}

	/**
	 * Full constructeur
	 * 
	 * @param message
	 *            MEssage d'erreur
	 * @param origine
	 *            Exception d'origine
	 * @param nomService
	 *            Nom du service
	 * @param methodeService
	 *            Méthode du service
	 * @param args
	 *            Arguments de la méthode
	 */
	public ServiceException(String message, Throwable origine,
			String nomService, String methodeService, String[] args) {
		super(message, origine);
		this.nomService = nomService;
		this.methodeService = methodeService;
		this.args = args;
	}
	
	public String toString()
	{
		StringBuffer ret = new StringBuffer();
		ret.append("MESSAGE: " + getLocalizedMessage() + "\n");
		ret.append("SERVICE: " + nomService + "\n");
		ret.append("METHODE: " + methodeService + "\n");
		for(int i=0; i<args.length; i++)
			ret.append("ARG " + i + ": " + args[i] + "\n");
		return ret.toString();
	}

}
